package com.fuyun.rpc.server.autoconfigure;

import com.fuyun.rpc.server.RpcApplication;
import com.fuyun.rpc.server.annotations.RpcProviderBootstrap;
import com.fuyun.rpc.server.config.RegistryConfig;
import com.fuyun.rpc.server.config.RpcConfig;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author: zrq1351
 * @date: 2025/2/18
 */
@Configuration
@EnableConfigurationProperties({RpcConfig.class, RegistryConfig.class})
public class FuyunRpcServerAutoConfigure {
	/**
	 * 创建并初始化RpcProviderBootstrap的Bean 该方法结合了RpcConfig和RegistryConfig配置，用于启动和管理RPC服务提供者
	 *
	 * @param rpcConfig      Rpc配置信息，包含RPC服务的通用配置参数
	 * @param registryConfig 注册中心配置信息，用于服务注册和发现
	 * @return RpcProviderBootstrap的实例，用于启动和管理RPC服务提供者
	 */
	@Bean
	public RpcProviderBootstrap rpcProviderBootstrap(RpcConfig rpcConfig, RegistryConfig registryConfig) {
		RpcApplication rpcApplication = new RpcApplication(rpcConfig, registryConfig);
		rpcApplication.init();
		return new RpcProviderBootstrap(rpcApplication);
	}

}